[25529] 2016-09-25_Ohm:用两百行JavaScript创造你自己的编程语言

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2016-09-25_Ohm:用两百行JavaScript创造你自己的编程语言 O h m   J a v a S c r i p t     u c a s F L   L i n u x   2 0 1 6 - 0 9 - 2 5   O h m   使 使   O h m     2 0 0     C o d e     D a t a   使 f o r m a l   g r a m m a r [ 1 ] 西   B i s o n [ 2 ]     Y a c c [ 3 ]     C   使 西 h o o k   O h m   O h m   O h m [ 4 ]   使   O h m ,   使   . o h m   使 宿   J a v a S c r i p t   宿
O h m   V P R I     S T E P S   p r o g r a m   ( p d f ) [ 5 ]   使   O h m     O m e t a [ 6 ]     4 0 0   O h m   西   O h m     O h m   g r a m m a r s e m a n t i c s t e s t s 使 使   g r a m m a r . o h m         西   0     9           O h m     O h m     t e s t 1 . j s 1 .   C o o l N u m s   { 2 .         / /   j u s t   a   b a s i c   i n t e g e r 3 .         N u m b e r   =   d i g i t + 4 .   } d i g i t N u m b e r d i g i t d i g i t N u m b e r 1 .   v a r   o h m   =   r e q u i r e ( ' o h m - j s ' ) ;
    J a v a S c r i p t                   g r a m m a r s e m a n t i c s     J a v a S c r i p t               J a v a S c r i p t                 J a v a S c r i p t     1 .   v a r   o h m   =   r e q u i r e ( ' o h m - j s ' ) ; 2 .   v a r   f s   =   r e q u i r e ( ' f s ' ) ; 3 .   v a r   a s s e r t   =   r e q u i r e ( ' a s s e r t ' ) ; 4 .   v a r   g r a m m a r   =   o h m . g r a m m a r ( f s . r e a d F i l e S y n c ( ' s r c / b l o g _ n u m b e r s / s y n t a x 1 . o h m ' ) . t o S t r i n g ( ) ) ; O h m . g r a m m a r 1 .   v a r   s e m   =   g r a m m a r . c r e a t e S e m a n t i c s ( ) . a d d O p e r a t i o n ( ' t o J S ' ,   { 2 .           N u m b e r :   f u n c t i o n ( a )   { 3 .                   r e t u r n   p a r s e I n t ( t h i s . s o u r c e S t r i n g , 1 0 ) ; 4 .           } 5 .   } ) ; t o J S s e m N u m b e r N u m b e r t o J S t h i s s o u r c e t h i s . s o u r c e S t r i n g p a r s e I n t p a r s e I n t 1 0 1 0
  1 0     J a v a S c r i p t     1 0     1 6   使 西 使     A P I     a s s e r t 1 .         f u n c t i o n   t e s t ( i n p u t ,   a n s w e r )   { 2 .             v a r   m a t c h   =   g r a m m a r . m a t c h ( i n p u t ) ; 3 .             i f ( m a t c h . f a i l e d ( ) )   r e t u r n   c o n s o l e . l o g ( " i n p u t   f a i l e d   t o   m a t c h   "   +   i n p u t   +   m a t c h . m e s s a g e ) ;           4 .             v a r   r e s u l t   =   s e m ( m a t c h ) . t o J S ( ) ; 5 .             a s s e r t . d e e p E q u a l ( r e s u l t , a n s w e r ) ; 6 .             c o n s o l e . l o g ( ' s u c c e s s   =   ' ,   r e s u l t ,   a n s w e r ) ; 7 .           } 1 .           t e s t ( " 1 2 3 " , 1 2 3 ) ; 2 .           t e s t ( " 9 9 9 " , 9 9 9 ) ; 3 .           t e s t ( " a b c " , 9 9 9 ) ; n o d e   t e s t 1 . j s 1 .   s u c c e s s   =     1 2 3   1 2 3 2 .   s u c c e s s   =     9 9 9   9 9 9 3 .   i n p u t   f a i l e d   t o   m a t c h   a b c L i n e   1 ,   c o l   1 : 4 .   >   1   |   a b c 5 .               ^
O h m     g r a m m a r . o h m   使                     6 .   E x p e c t e d   a   d i g i t 1 .   C o o l N u m s   { 2 .       / /   j u s t   a   b a s i c   i n t e g e r 3 .       N u m b e r   =   f l o a t   |   i n t 4 .       i n t         =   d i g i t + 5 .       f l o a t     =   d i g i t +   " . "   d i g i t + 6 .   } N u m b e r f l o a t i n t | N u m b e r i n t d i g i t + f l o a t d i g i t + d i g i t + 1 .   v a r   s e m   =   g r a m m a r . c r e a t e S e m a n t i c s ( ) . a d d O p e r a t i o n ( ' t o J S ' ,   {         N u m b e r :   f u n c t i o n ( a )   {
                O h m     O h m         2 .           N u m b e r :   f u n c t i o n ( a )   { 3 .                   r e t u r n   a . t o J S ( ) ; 4 .           } , 5 .           i n t :   f u n c t i o n ( a )   { 6 .                   c o n s o l e . l o g ( " d o i n g   i n t " ,   t h i s . s o u r c e S t r i n g ) ; 7 .                   r e t u r n   p a r s e I n t ( t h i s . s o u r c e S t r i n g , 1 0 ) ; 8 .           } , 9 .           f l o a t :   f u n c t i o n ( a , b , c )   { 1 0 .                   c o n s o l e . l o g ( " d o i n g   f l o a t " ,   t h i s . s o u r c e S t r i n g ) ; 1 1 .                   r e t u r n   p a r s e F l o a t ( t h i s . s o u r c e S t r i n g ) ; 1 2 .           } 1 3 .   } ) ; i n t f l o a t N u m b e r N u m b e r a t o J S N u m b e r N u m b e r i n t a a b c
a r i t y a r i t y [ 7 ]       O h m   使 使   0     J a v a S c r i p t     1 6     0     9     A     F 使   0     2 5 5     C     J a v a S c r i p t     f l o a t 1 .       f l o a t     =   d i g i t +   " . "   d i g i t + d i g i t + . d i g i t + 1 .   t e s t ( " 1 2 3 " , 1 2 3 ) ; 2 .   t e s t ( " 9 9 9 " , 9 9 9 ) ; 3 .   / / t e s t ( " a b c " , 9 9 9 ) ; 4 .   t e s t ( ' 1 2 3 . 4 5 6 ' , 1 2 3 . 4 5 6 ) ; 5 .   t e s t ( ' 0 . 1 2 3 ' , 0 . 1 2 3 ) ; 6 .   t e s t ( ' . 1 2 3 ' , 0 . 1 2 3 ) ; . 1 2 3 0 x 1 .       N u m b e r   =   h e x   |   f l o a t   |   i n t 2 .       i n t         =   d i g i t +
      0     9   a     f   A     F             J a v a S c r i p t     使         O h m     使   O h m         3 .       f l o a t     =   d i g i t +   " . "   d i g i t + 4 .       h e x         =   " 0 x "   h e x D i g i t + 5 .       h e x D i g i t   : =   " 0 " . . " 9 "   |   " a " . . " f "   |   " A " . . " F " h e x 0 x h e x D i g i t s h e x D i g i t N u m b e r 1 .           h e x :   f u n c t i o n ( a , b )   { 2 .                   r e t u r n   p a r s e I n t ( t h i s . s o u r c e S t r i n g , 1 6 ) ; 3 .           } 1 6 p a r s e I n t h e x D i g i t 1 .       h e x D i g i t   : =   " 0 " . . " 9 "   |   " a " . . " f "   |   " A " . . " F " : = = : = h e x D i g i t
  西 使   ,   O h m         O h m     O h m     1 . 8 e 3     1 8 0 0 0   1 . 8 e - 3     . 0 1 8     使 使 d i g i t s p a c e = h e x D i g i t 1 .   t e s t ( ' 0 x 4 5 6 ' , 0 x 4 5 6 ) ; 2 .   t e s t ( ' 0 x F F ' , 2 5 5 ) ; 1 . 8 × 1 0 ^ 3 1 .           f l o a t     =   d i g i t +   " . "   d i g i t +   e x p ? 2 .           e x p         =   " e "   " - " ?   d i g i t + e x p ? ? e x p e x p 1 .           f l o a t :   f u n c t i o n ( a , b , c , d )   { 2 .                   c o n s o l e . l o g ( " d o i n g   f l o a t " ,   t h i s . s o u r c e S t r i n g ) ; 3 .                   r e t u r n   p a r s e F l o a t ( t h i s . s o u r c e S t r i n g ) ;
O h m   O h m   使   O h m     J a v a S c r i p t     O h m   O h m   使   O h m   西 使 O h m         8     0     7     0     v i a :   h t t p s : / / w w w . p u b n u b . c o m / b l o g / 2 0 1 6 - 0 8 - 3 0 - j a v a s c r i p t - p a r s e r - o h m - m a k e s - c r e a t i n g - a - p r o g r a m m i n g - l a n g u a g e - e a s y / J o s h   M a r i n a c c i [ 8 ]   u c a s F L   w x y   L C T T [ 9 ]   L i n u x   [ 1 ] :   h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / F o r m a l _ g r a m m a r [ 2 ] :   h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / G N U _ b i s o n [ 3 ] :   h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / Y a c c [ 4 ] :   h t t p s : / / g i t h u b . c o m / c d g l a b s / o h m [ 5 ] :   h t t p : / / w w w . v p r i . o r g / p d f / t r 2 0 1 2 0 0 1 _ s t e p s . p d f [ 6 ] :   h t t p : / / t i n l i z z i e . o r g / o m e t a / [ 7 ] :   h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / A r i t y [ 8 ] :   h t t p s : / / w w w . p u b n u b . c o m / b l o g / a u t h o r / j o s h / [ 9 ] :   h t t p s : / / g i t h u b . c o m / L C T T / T r a n s l a t e P r o j e c t 4 .           } , 1 .   t e s t ( ' 4 . 8 e 1 0 ' , 4 . 8 e 1 0 ) ; 2 .   t e s t ( ' 4 . 8 e - 1 0 ' , 4 . 8 e - 1 0 ) ; ( 4 . 8 5   +   5   *   ( 2 3 8   -   6 8 ) / 2 ) o 1 .   t e s t ( ' 0 o 7 7 ' , 7 * 8 + 7 ) ; 2 .   t e s t ( ' 0 o 2 3 ' , 0 o 2 3 ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则