json_parser_outline.txt 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. parser:
  2. - call parse_value
  3. - next_token
  4. ? <EOF> nop.
  5. parse_value:
  6. - next_token
  7. ? <OBJ_BEGIN> call parse_object.
  8. ? <ARR_BEGIN> call parse_array.
  9. ? <STRING> push. return.
  10. ? <BOOLEAN> push. return.
  11. ? <NULL> push. return.
  12. ? <NUMBER> push. return.
  13. parse_object:
  14. - push table
  15. - next_token
  16. ? <STRING> push.
  17. - next_token
  18. ? <COLON> nop.
  19. - call parse_value
  20. - set table
  21. - next_token
  22. ? <OBJ_END> return.
  23. ? <COMMA> loop parse_object.
  24. parse_array:
  25. - push table
  26. - call parse_value
  27. - table append
  28. - next_token
  29. ? <COMMA> loop parse_array.
  30. ? ] return.
  31. next_token:
  32. - check next character
  33. ? { return <OBJ_BEGIN>
  34. ? } return <OBJ_END>
  35. ? [ return <ARR_BEGIN>
  36. ? ] return <ARR_END>
  37. ? , return <COMMA>
  38. ? : return <COLON>
  39. ? [-0-9] gobble number. return <NUMBER>
  40. ? " gobble string. return <STRING>
  41. ? [ \t\n] eat whitespace.
  42. ? n Check "null". return <NULL> or <UNKNOWN>
  43. ? t Check "true". return <BOOLEAN> or <UNKNOWN>
  44. ? f Check "false". return <BOOLEAN> or <UNKNOWN>
  45. ? . return <UNKNOWN>
  46. ? \0 return <END>